//
//  VisitorView.swift
//  Sina
//
//  Created by maling  on 15/11/4.
//  Copyright © 2015年 maling . All rights reserved.
//

import UIKit
import SnapKit
 /// 访客视图点击按钮事件 -- 协议
protocol VisitorViewDelegate: NSObjectProtocol {

    //定义协议注册方法
    func visitorViewDidRegister()
    //定义登录协议方法
    func visitorViewDidLogin()
}




class VisitorView: UIView {
    
    //定义一个代理属性
    weak var delegate: VisitorViewDelegate?
    
    //MARK: - 监听方法
    @objc private func clickLogin() {
        delegate?.visitorViewDidLogin()
    
    }
    @objc private func clickRegister() {
    
        delegate?.visitorViewDidRegister()
    }
    
  //________________________________________________
    
    
    
    //这样吗
    
    //MARK: - 《调用》-让UIview视图调用显示出来给用户看
    //重写构造函数
    //这句构造函数是纯代码创建控件时候调用
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupInfo()
    }
    //这句是在从XIB  或者 Storyboard 里面 拖的创建控件时候调用
    required init?(coder aDecoder: NSCoder) {
        //        fatalError("init(coder:) has not been implemented")
        super.init(coder: aDecoder)
        setupInfo()
    }
    
    
    //设置所有View的视图显示  定义一个函数 方便调用
    //定义一个函数 让其他几个控制器视图也能够看到访问者看到的视图
    func setViewInfo(imageName: String?, title: String) {
        
        //1、给title赋值
        messageLabel.text = title
        
        //2、给iconImage赋值
        //如果nameImage  为nil 说明是首页 直接返回
        guard let nameImage: String = imageName else {
        
            //开始动画
            setAnimal()
            
            return
        
        }
        //给iconImage赋值
        iconView.image = UIImage(named: nameImage)
        //隐藏小房子
        homeView.hidden = true
        
        //将遮罩移动到底层  防止其他视图也被盖着
        sendSubviewToBack(maskIconView)
        
        
    }
    
   //MARK: - 添加动画
     private func setAnimal() {
    
        //1.创建一个基本动画
       let baseAnimal = CABasicAnimation(keyPath: "transform.rotation")
        baseAnimal.toValue = 2 * M_PI
        baseAnimal.repeatCount = MAXFLOAT
        baseAnimal.duration = 20
        
        //2. 用在不断重复的动画上，当动画绑定的图层对应的视图被销毁，动画会自动被销毁
        baseAnimal.removedOnCompletion = false
        
        //3.将动画添加到图层上
        iconView.layer.addAnimation(baseAnimal, forKey: nil)
        
        
    }
  
    

    
    //MARK: - 懒加载创建观察者看到的显示内容控件
    //1>设置转轮
    private lazy var iconView: UIImageView = UIImageView(imageName: "visitordiscover_feed_image_smallicon")

    //2>设置遮罩
    private lazy var maskIconView: UIImageView = UIImageView(imageName: "visitordiscover_feed_mask_smallicon")

    //3》设置小房子
    private lazy var homeView: UIImageView = UIImageView(imageName: "visitordiscover_feed_image_house")

    //4> 设置label文本
    private lazy var messageLabel: UILabel = UILabel(title: "关注一些人，回这里看看有什么惊喜关注一些人，回这里看看有什么惊喜", fontSize: 14, color: UIColor.darkGrayColor())
    
     //5> 创建注册按钮
     lazy var registerButton: UIButton = UIButton(title: "注册", color: UIColor.orangeColor(), imageName: "common_button_white_disable")
 
    
    //6> 创建登录按钮
    lazy var loginButton: UIButton = UIButton(title: "登录", color: UIColor.darkGrayColor(), imageName: "common_button_white_disable")
    
    
}

//给观察者添加一个扩展  显示基本视图 控件信息
extension VisitorView {

    //将创建的控件添加到 UIview视图上面
    func setupInfo() {
    
        addSubview(iconView)
        addSubview(maskIconView)
        addSubview(homeView)
        addSubview(messageLabel)
        addSubview(registerButton)
        addSubview(loginButton)
        
        //MARK: - (自动布局)
        //  如果从storyboard或者是XIB中的控件 用的是setFrame 调整控件的位置
        //设置自动布局（布局控件位置）
        //    override func addConstraint(constraint: NSLayoutConstraint) {
        //        <#code#>
        //    }
        //添加约束
        
        //MARK: - 手写自动布局里面一定要写
        // translatesAutoresizingMaskIntoConstraints 默认是 true，支持使用 setFrame 的方式设置控件位置
        // false 支持使用自动布局来设置控件位置
        for v in subviews {
           v.translatesAutoresizingMaskIntoConstraints = false
        }
        
        //1> 添加转轮的自动布局属性

        iconView.snp_makeConstraints { (make) -> Void in
            
            make.centerX.equalTo(self.snp_centerX)
            make.centerY.equalTo(self.snp_centerY)
        }
        
        //2> 添加小房子的自动布局属性
        homeView.snp_makeConstraints { (make) -> Void in
            make.center.equalTo(iconView.snp_center)
        }
        
        //3》设置label的自动布局

        messageLabel.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(iconView.snp_centerX)
            make.top.equalTo(iconView.snp_bottom).offset(16)
            make.width.equalTo(224)
            make.height.equalTo(36)
            
        }
        
        //4> 添加注册按钮


        registerButton.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(messageLabel.snp_left)
            make.top.equalTo(messageLabel.snp_bottom).offset(16)
            make.width.equalTo(100)
            make.height.equalTo(36)

            
        }
        
        //5>添加登录按钮的自动布局

        loginButton.snp_makeConstraints { (make) -> Void in
            
            make.right.equalTo(messageLabel.snp_right)
            make.top.equalTo(registerButton.snp_top)
            make.width.equalTo(registerButton.snp_width)
            make.height.equalTo(registerButton.snp_height)
        }
        
        //6>设置遮罩的自动布局
 
        maskIconView.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(self.snp_top)
            make.left.equalTo(self.snp_left)
            make.right.equalTo(self.snp_right)
            make.bottom.equalTo(registerButton.snp_bottom)
            
        }
        
        

        //设置背景色 让看起来没有色差 色彩层次结构
        backgroundColor = UIColor(white: 237.0 / 255.0, alpha: 1)
        
        
        
        //MARK: - 给注册登录按钮添加监听方法
//        registerButton.addTarget(self, action: "clickRegister", forControlEvents: .TouchUpInside)
//        loginButton.addTarget(self, action: "clickLogin", forControlEvents: .TouchUpInside)
//        
        
        
    }
    
    
  
}